<script lang="js">
import { imLogin } from "utils/utils"
// 注册一个全局变量

let WebIM = (wx.WebIM = require("utils/WebIM")["default"]).WebIM

export default {
    globalData: {
        footerRail: false,
        statusBarHeight: 0,
        globalDatabarHeight: 0,
        systemWidth: 0,
        systemHeight: 0,
        noBarHeight: 0,
        capsuleWidth: 0,
        conn: {
            closed: false,
            curOpenOpt: {},

            open(opt) {
                uni.showLoading({
                    title: "正在初始化客户端..",
                    mask: true,
                });
                // debugger
                this.curOpenOpt = opt;
                this.closed = false;
            },

            reopen() {
                if (this.closed) {
                    WebIM.conn.open(this.curOpenOpt);
                    this.closed = false;
                }
            },
        }
    },
    onLaunch: function() {
        // 检查小程序是否更新
        this.checkMiniUpdate()
        WebIM.conn.listen({
            onOpened: function() {
            }, //连接成功回调
            onClosed: function() {
                // 不能登录，在此登录可能会陷入循环登录与退出
            imLogin()
            }, //连接关闭回调
            onTextMessage: function(message) {
                console.log(message)
                if (message) {
                    store.dispatch("setMsg", message);
                    console.log(message)
                }

            }, //收到文本消息
            onEmojiMessage: function(message) {}, //收到表情消息
            onPictureMessage: function(message) {}, //收到图片消息
            onCmdMessage: function(message) {}, //收到命令消息
            onAudioMessage: function(message) {}, //收到音频消息
            onLocationMessage: function(message) {}, //收到位置消息
            onFileMessage: function(message) {}, //收到文件消息
            onCustomMessage: function(message) {
                store.dispatch("setMsg", message);
                console.log(message)
				
            }, //收到自定义消息
            onVideoMessage: function(message) {
            }, //收到视频消息
            onPresence: function(message) {}, //处理“广播”或“发布-订阅”消息，如联系人订阅请求、处理群组、聊天室被踢解散等消息
            onRoster: function(message) {}, //处理好友申请
            onInviteMessage: function(message) {}, //处理群组邀请
            onOnline: function(message) {
                console.log(message)
            }, //本机网络连接成功
            onOffline: function() {
                console.log(message)
                WebIM.conn.close()
                imLogin()
            }, //本机网络掉线
            onError: function(error) {
                console.log(error)
            }, //失败回调
            onBlacklistUpdate: function(list) { //黑名单变动
                // 查询黑名单，将好友拉黑，将好友从黑名单移除都会回调这个函数，list则是黑名单现有的所有好友信息
                console.log(list);
            },
            onRecallMessage: function(message) {}, //收到撤回消息回调
            onReceivedMessage: function(message) {
                console.log(message)
            }, //收到消息送达服务器回执
            onDeliveredMessage: function(message) {
                console.log(message)
            }, //收到消息送达客户端回执
            onReadMessage: function(message) {}, //收到消息已读回执
            onCreateGroup: function(message) {}, //创建群组成功回执（需调用createGroupNew）
            onMutedMessage: function(message) {}, //如果用户在A群组被禁言，在A群发消息会走这个回调并且消息不会传递给群其它成员
            onChannelMessage: function(message) {
                console.log(message)
                let msg  = {
                    contentsType:"isRead",
                    id:message.from
                }
                store.dispatch("setMsg", msg);

            } //收到整个会话已读的回执，在对方发送channel ack时会在这个回调里收到消息
        })
    },
    onShow: function() {
        /*
            存储设备信息
        */
        uni.getSystemInfo().then(sys => {
            /*
            iPhone高版本底部存在滑动条
             */
            const iPhones = ['iPhone X', 'iPhone 11', 'iPhone12', 'iPhone XR', 'iPhone XS Max', 'iPhone 12/13 mini', 'iPhone 12/13', 'iPhone 12/13(Pro)', 'iPhone 12/13 Pro Max', 'iPhone 14 Pro Max']
            // 本地存储底部横条状态、
            this.globalData.footerRail = iPhones.indexOf(sys.deviceModel) >= 0 ? true : false
            this.globalData.systemWidth = sys.screenWidth
            this.globalData.systemHeight = sys.screenHeight
            this.globalData.statusBarHeight = sys.statusBarHeight

            // 胶囊数据
            const { top, height, width } = uni.getMenuButtonBoundingClientRect();
            this.globalData.capsuleWidth = width || 88
            // 自定义导航栏高度 = 胶囊高度 + 胶囊的padding*2, 如果获取不到设置为38
            this.globalData.barHeight = height ? height + (top - sys.statusBarHeight) * 2 : 38 || 38
            this.globalData.noBarHeight = sys.screenHeight - sys.statusBarHeight - this.globalData.barHeight || 50
        })
        // 重新加载时查看是否登录
        /*const params = {
            uid: uni.getStorageSync('uid')
        }
        checkLogin(params).then(res => {
            console.log(res, 'res---')
        }).catch(e => {
            console.log(e)
            if (e.status == 0) {
                uni.reLaunch({
                    url: '/subpages/pages/login/login'
                })
            }
        })*/

        imLogin()
    },
    onHide: function() {
        // console.log('App Hide')
    },
    methods: {
        /**
         * 微信小程序检查升级
         */
        checkMiniUpdate() {
            const updateManager = wx.getUpdateManager()
            updateManager.onCheckForUpdate(function(res) {
                // 请求完新版本信息的回调
                console.log(res.hasUpdate)
            })

            updateManager.onUpdateReady(function() {
                wx.showModal({
                    title: '更新提示',
                    content: '新版本已经准备好，是否重启应用？',
                    success: function(res) {
                        if (res.confirm) {
                            // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                            updateManager.applyUpdate()
                        }
                    }
                })
            })

            updateManager.onUpdateFailed(function() {
                // 新版本下载失败
                uni.showToast({
                    title: '新版本下载失败,请重试',
                    duration: 2000,
                    icon: 'none'
                })
            })
        }
    }
}
</script>

<style>
* {
    margin: 0;
    padding: 0;
    width: 100%;
    height: 100%;
}
/*每个页面公共css */
::-webkit-scrollbar {
    width: 0;  /*这将隐藏滚动条的宽度*/
    height: 0; /*这将隐藏滚动条的高度*/
}
</style>
